<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>LogDevice API: /Users/chunma/fbsource/fbcode/logdevice/include/Client.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">LogDevice API
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_3c764b8ed47d00d6b5627c49bc32f70b.html">fbsource</a></li><li class="navelem"><a class="el" href="dir_7d108206b339ff559c2aaa41b8fb2672.html">fbcode</a></li><li class="navelem"><a class="el" href="dir_903050bd1b8bae4e85fca6c90c654c58.html">logdevice</a></li><li class="navelem"><a class="el" href="dir_46acbb48b960dc60b3c5450db912a0e4.html">include</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">Client.h</div>  </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &lt;chrono&gt;</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &quot;logdevice/include/AsyncReader.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &quot;logdevice/include/ClientSettings.h&quot;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &quot;logdevice/include/ClusterAttributes.h&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &quot;logdevice/include/ConfigSubscriptionHandle.h&quot;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &quot;logdevice/include/Err.h&quot;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &quot;logdevice/include/LogHeadAttributes.h&quot;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &quot;logdevice/include/LogTailAttributes.h&quot;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &quot;logdevice/include/LogsConfigTypes.h&quot;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &quot;logdevice/include/Reader.h&quot;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &quot;logdevice/include/Record.h&quot;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &quot;logdevice/include/types.h&quot;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacefacebook.html">facebook</a> { <span class="keyword">namespace </span>logdevice {</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment">// Enum which is used to determine accuracy of findTime or findKey in order to</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">// get best accuracy-speed trade off for each specific use case. See</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">// findTimeSync() or findKeySync() for documentation about each accuracy mode.</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="keyword">enum class</span> FindKeyAccuracy { STRICT, APPROXIMATE };</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">// Struct which is used to provide the result of findKey. See findKey() for</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment">// documentation about the returned values.</span></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="structfacebook_1_1logdevice_1_1_find_key_result.html">   46</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structfacebook_1_1logdevice_1_1_find_key_result.html">FindKeyResult</a> {</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;  Status status;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;  lsn_t lo;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;  lsn_t hi;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;};</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="comment">// Enum which is used to determine accuracy of dataSize -- only approximate</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="comment">// mode is currently supported.</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="keyword">enum class</span> DataSizeAccuracy { APPROXIMATE };</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="keyword">typedef</span> std::function&lt;void(Status st, const DataRecord&amp; r)&gt; append_callback_t;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="keyword">typedef</span> std::function&lt;void(Status, lsn_t result)&gt; find_time_callback_t;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<span class="keyword">typedef</span> std::function&lt;void(FindKeyResult result)&gt; find_key_callback_t;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="keyword">typedef</span> std::function&lt;void(Status, uint64_t result)&gt; byte_offset_callback_t;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="keyword">typedef</span> std::function&lt;void(Status)&gt; trim_callback_t;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="keyword">typedef</span> std::function&lt;void(Status status, bool empty)&gt; is_empty_callback_t;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160; <span class="keyword">typedef</span> std::function&lt;void(Status status, size_t size)&gt; data_size_callback_t;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="keyword">typedef</span> std::function&lt;void(Status status, lsn_t)&gt; get_tail_lsn_callback_t;</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="keyword">typedef</span> std::function&lt;void(Status status, std::pair&lt;logid_t, logid_t&gt;)&gt;</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    get_log_range_by_name_callback_t;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;<span class="keyword">typedef</span> std::function&lt;void(Status status, std::map&lt;std::string, logid_range_t&gt;)&gt;</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    get_log_ranges_by_namespace_callback_t;</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;<span class="keyword">typedef</span> std::function&lt;void()&gt; config_update_callback_t;</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;<span class="keyword">typedef</span> std::function&lt;void(Status status, std::unique_ptr&lt;client::LogGroup&gt;)&gt;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    get_log_group_callback_t;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;<span class="keyword">typedef</span> std::function&lt;void(Status status,</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;                           std::unique_ptr&lt;client::LogGroup&gt;,</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;                           <span class="keyword">const</span> std::string&amp; failure_reason)&gt;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    make_log_group_callback_t;</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;<span class="keyword">typedef</span> std::function&lt;void(Status status,</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;                           std::unique_ptr&lt;client::LogAttributes&gt;)&gt;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    get_log_attributes_callback_t;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<span class="keyword">typedef</span> std::function&lt;void(Status status, std::unique_ptr&lt;client::Directory&gt;)&gt;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    get_directory_callback_t;</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;<span class="keyword">typedef</span> std::function&lt;void(Status status,</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;                           std::unique_ptr&lt;client::Directory&gt;,</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;                           <span class="keyword">const</span> std::string&amp; failure_reason)&gt;</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    make_directory_callback_t;</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;<span class="keyword">typedef</span> std::function&lt;void(Status, const std::string&amp; failure_reason)&gt;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    status_callback_t;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;<span class="keyword">typedef</span> std::function&lt;void(Status status, std::unique_ptr&lt;LogTailAttributes&gt;)&gt;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    get_tail_attributes_callback_t;</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;<span class="keyword">typedef</span> std::function&lt;void(Status status, std::unique_ptr&lt;LogHeadAttributes&gt;)&gt;</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    get_head_attributes_callback_t;</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classfacebook_1_1logdevice_1_1_client.html">  199</a></span>&#160;<span class="keyword">class </span><a class="code" href="classfacebook_1_1logdevice_1_1_client.html">Client</a> {</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;  <span class="keyword">static</span> std::shared_ptr&lt;Client&gt;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;  <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a22c6047d80ec6b513bef7d61883f0bb4">create</a>(std::string cluster_name,</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;         std::string config_url,</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;         std::string credentials,</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;         std::chrono::milliseconds timeout,</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;         std::unique_ptr&lt;ClientSettings&gt; <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#aafa91f8e42039d4f7606d1c7668f37ea">settings</a>,</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;         std::string csid = <span class="stringliteral">&quot;&quot;</span>) noexcept;</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#adb9de7dd7dc6db1b9b9dcca495a0d7b4">Client</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a7f65fb0d14fe6a210a6001956a31b2a6">~Client</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;  <span class="keyword">virtual</span> lsn_t <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a038c93eefa0a8aa337b0c0b10970c7d0">appendSync</a>(logid_t logid,</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;                           std::string payload,</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;                           AppendAttributes attrs = AppendAttributes(),</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;                           std::chrono::milliseconds* timestamp = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;                           noexcept = 0;</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;  <span class="keyword">virtual</span> lsn_t <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a038c93eefa0a8aa337b0c0b10970c7d0">appendSync</a>(logid_t logid,</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;                           <span class="keyword">const</span> Payload&amp; payload,</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;                           AppendAttributes attrs = AppendAttributes(),</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;                           std::chrono::milliseconds* timestamp = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;                           noexcept = 0;</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#aadaa483f8ea0d2fc39d0eb3c5f65c09a">append</a>(logid_t logid,</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;                     std::string payload,</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;                     append_callback_t cb,</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;                     AppendAttributes attrs = AppendAttributes()) noexcept = 0;</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#aadaa483f8ea0d2fc39d0eb3c5f65c09a">append</a>(logid_t logid,</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;                     <span class="keyword">const</span> Payload&amp; payload,</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;                     append_callback_t cb,</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;                     AppendAttributes attrs = AppendAttributes()) noexcept = 0;</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;  <span class="keyword">virtual</span> std::unique_ptr&lt;Reader&gt;</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;  <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a797d6ebcb95ace4b95a198a293215103">createReader</a>(<span class="keywordtype">size_t</span> max_logs, ssize_t buffer_size = -1) noexcept = 0;</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;  <span class="keyword">virtual</span> std::unique_ptr&lt;AsyncReader&gt;</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;  <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a527b0195263e113ad1d98a59d85bb8cd">createAsyncReader</a>(ssize_t buffer_size = -1) noexcept = 0;</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a2b30b82b19b71acd383c3f2fdbf321aa">setTimeout</a>(std::chrono::milliseconds timeout) noexcept = 0;</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a01eb0f0c77e1c55ad2958a05aad4bdc3">trimSync</a>(logid_t logid, lsn_t lsn) noexcept = 0;</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a51dbf28a3fc8266e4662a71deb73c21a">trim</a>(logid_t logid, lsn_t lsn, trim_callback_t cb) noexcept = 0;</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#ab2363408b3b4c928cac60845cbe31d05">addWriteToken</a>(std::string) noexcept = 0;</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;  <span class="keyword">virtual</span> lsn_t <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a2a04ef35610e51a47c3160e3e3b452bf">findTimeSync</a>(</div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;    logid_t logid,</div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;    std::chrono::milliseconds timestamp,</div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;    Status* status_out = <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;    FindKeyAccuracy accuracy = FindKeyAccuracy::STRICT)</div><div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;    noexcept = 0;</div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;</div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="structfacebook_1_1logdevice_1_1_find_key_result.html">FindKeyResult</a> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#ab42189ee10063b1917555aa83799c82f">findKeySync</a>(</div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;    logid_t logid,</div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;    std::string key,</div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;    FindKeyAccuracy accuracy = FindKeyAccuracy::STRICT) noexcept = 0;</div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;</div><div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a1e0c38ddae87c659ff68bbea760f020b">findTime</a>(</div><div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;    logid_t logid,</div><div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;    std::chrono::milliseconds timestamp,</div><div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;    find_time_callback_t cb,</div><div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;    FindKeyAccuracy accuracy = FindKeyAccuracy::STRICT) noexcept = 0;</div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;</div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a4d954a3bca85a3b41ffd23600463cfcb">findKey</a>(</div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;    logid_t logid,</div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;    std::string key,</div><div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;    find_key_callback_t cb,</div><div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;    FindKeyAccuracy accuracy = FindKeyAccuracy::STRICT) noexcept = 0;</div><div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;</div><div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#acea7b4e3a8830fd9b7161470fce43f25">isLogEmptySync</a>(logid_t logid, <span class="keywordtype">bool</span>* empty) noexcept = 0;</div><div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;</div><div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#aa402ed205a3138575644c8b3e9e6df85">isLogEmpty</a>(logid_t logid, is_empty_callback_t cb) noexcept = 0;</div><div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;</div><div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a2c058bc9b12472e46ce95d77f32a0b2c">dataSizeSync</a>(logid_t logid,</div><div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;                           std::chrono::milliseconds start,</div><div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;                           std::chrono::milliseconds end,</div><div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;                           DataSizeAccuracy accuracy,</div><div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;                           <span class="keywordtype">size_t</span>* size) noexcept = 0;</div><div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#af19a0efc76f548b493957873002c1c15">dataSize</a>(logid_t logid,</div><div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;                       std::chrono::milliseconds start,</div><div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;                       std::chrono::milliseconds end,</div><div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;                       DataSizeAccuracy accuracy,</div><div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;                       data_size_callback_t cb) noexcept = 0;</div><div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;</div><div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;  <span class="keyword">virtual</span> lsn_t <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a1f426c780bd844dcc55114bf3a9b4c5f">getTailLSNSync</a>(logid_t logid) noexcept = 0;</div><div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;</div><div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#ae5854411762db40e48ba2e74142297c2">getTailLSN</a>(logid_t logid,</div><div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;                         get_tail_lsn_callback_t cb) noexcept = 0;</div><div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;</div><div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;  <span class="keyword">virtual</span> std::unique_ptr&lt;LogTailAttributes&gt;</div><div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;  <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a5a487dfa98c0d77fe35980f5392abbf4">getTailAttributesSync</a>(logid_t logid) noexcept = 0;</div><div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;</div><div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a148372b0049445d9b63b06d5ac0d7613">getTailAttributes</a>(logid_t logid,</div><div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;                                get_tail_attributes_callback_t cb) noexcept = 0;</div><div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;</div><div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;  <span class="keyword">virtual</span> std::unique_ptr&lt;LogHeadAttributes&gt;</div><div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;  <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a0bcc4915bb41bfd3b97bf2de51584967">getHeadAttributesSync</a>(logid_t logid) noexcept = 0;</div><div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;</div><div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a3ff4a519d6313dc122468b0ab84a6cbc">getHeadAttributes</a>(logid_t logid,</div><div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;                                get_head_attributes_callback_t cb) noexcept = 0;</div><div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;  <span class="keyword">virtual</span> logid_range_t <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#ac4d2aabc1842a955534ba9f215a44592">getLogRangeByName</a>(<span class="keyword">const</span> std::string&amp; name)</div><div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;    noexcept = 0;</div><div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;</div><div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#ac4d2aabc1842a955534ba9f215a44592">getLogRangeByName</a>(<span class="keyword">const</span> std::string&amp; name,</div><div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;                                 get_log_range_by_name_callback_t cb)</div><div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;                                 noexcept = 0;</div><div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;</div><div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;  <span class="keyword">virtual</span> std::string <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a5e29c336be53be4381ea32a7e2a677fa">getLogNamespaceDelimiter</a>() noexcept = 0;</div><div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;  <span class="keyword">virtual</span> std::map&lt;std::string, logid_range_t&gt;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;  <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a0817e65400f859da5f8c540d445d2a4f">getLogRangesByNamespace</a>(<span class="keyword">const</span> std::string&amp; ns) noexcept = 0;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a0817e65400f859da5f8c540d445d2a4f">getLogRangesByNamespace</a>(</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;      <span class="keyword">const</span> std::string&amp; ns,</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;      get_log_ranges_by_namespace_callback_t cb) noexcept = 0;</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;  <span class="keyword">virtual</span> std::unique_ptr&lt;client::LogGroup&gt;</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;    <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#aa6b836b639eacf5f737fbee3246ae78f">getLogGroupSync</a>(<span class="keyword">const</span> std::string&amp; path) noexcept = 0;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#aab2bf5451fc1e3415681271b64de0bfe">getLogGroup</a>(<span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;    get_log_group_callback_t cb) noexcept = 0;</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;  <span class="keyword">virtual</span> std::unique_ptr&lt;client::LogGroup&gt;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;   <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#ac000efd4c5f40b2836e13b4ce8b5e94b">getLogGroupByIdSync</a>(<span class="keyword">const</span> logid_t logid) noexcept = 0;</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a0d41ef80f8fc732ccd633efddfad96cc">getLogGroupById</a>(<span class="keyword">const</span> logid_t logid,</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;                               get_log_group_callback_t cb) noexcept = 0;</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a70bbf9403fb51a73c2124e55fb97d0f4">makeDirectory</a>(<span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;                            <span class="keywordtype">bool</span> mk_intermediate_dirs,</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;                            <span class="keyword">const</span> client::LogAttributes&amp; attrs,</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;                            make_directory_callback_t cb) noexcept = 0;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;  <span class="keyword">virtual</span> std::unique_ptr&lt;client::Directory&gt; <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a553df78853ca09da72c8c090ab1904f9">makeDirectorySync</a>(</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;      <span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;      <span class="keywordtype">bool</span> mk_intermediate_dirs = <span class="keyword">false</span>,</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;      <span class="keyword">const</span> client::LogAttributes&amp; attrs = client::LogAttributes(),</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;      std::string* failure_reason = <span class="keyword">nullptr</span>) noexcept = 0;</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#aa1697b6688a972f991a05c706bdcecdf">removeDirectory</a>(<span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;                              <span class="keywordtype">bool</span> recursive,</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;                              status_callback_t) noexcept = 0;</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a56747c28caeca0476ad42495cd2d00ca">removeDirectorySync</a>(<span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;                                   <span class="keywordtype">bool</span> recursive = <span class="keyword">false</span>) noexcept = 0;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a1a2c5b528fdeca565cb837d2e307df34">removeLogGroupSync</a>(<span class="keyword">const</span> std::string&amp; path) noexcept = 0;</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a0f09c107d0083cf3e23538dca8b430bb">removeLogGroup</a>(<span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;                             status_callback_t cb) noexcept = 0;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a9c3bcf709656e91fc65a82ee32e6634c">rename</a>(<span class="keyword">const</span> std::string&amp; from_path,</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;                     <span class="keyword">const</span> std::string&amp; to_path,</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;                     status_callback_t cb) noexcept = 0;</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#adea81d5b164611e4da5a6878458b51e0">renameSync</a>(<span class="keyword">const</span> std::string&amp; from_path,</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;                          <span class="keyword">const</span> std::string&amp; to_path,</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;                          std::string* failure_reason = <span class="keyword">nullptr</span>) noexcept = 0;</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#af5d99be796b2bdba8e9da20b08b04719">makeLogGroup</a>(<span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;                           <span class="keyword">const</span> logid_range_t&amp; range,</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;                           <span class="keyword">const</span> client::LogAttributes&amp; attrs,</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;                           <span class="keywordtype">bool</span> mk_intermediate_dirs,</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;                           make_log_group_callback_t cb) noexcept = 0;</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;  <span class="keyword">virtual</span> std::unique_ptr&lt;client::LogGroup&gt; <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a54632fc9babcbe30d475e2da23f914f6">makeLogGroupSync</a>(</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;      <span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;      <span class="keyword">const</span> logid_range_t&amp; range,</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;      <span class="keyword">const</span> client::LogAttributes&amp; attrs = client::LogAttributes(),</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;      <span class="keywordtype">bool</span> mk_intermediate_dirs = <span class="keyword">false</span>,</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;      std::string * failure_reason = <span class="keyword">nullptr</span>) noexcept = 0;</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a771e6e5420f578bac83c51da04c878c2">setAttributes</a>(<span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;                            <span class="keyword">const</span> client::LogAttributes&amp; attrs,</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;                            status_callback_t cb) noexcept = 0;</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span></div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;  <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a1692d455a2c608dbcecd675123338c7a">setAttributesSync</a>(<span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;                    <span class="keyword">const</span> client::LogAttributes&amp; attrs,</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;                    std::string* failure_reason = <span class="keyword">nullptr</span>) noexcept = 0;</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#aaef92340ce40a5f12b0e9b685595145a">setLogGroupRange</a>(<span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;                               <span class="keyword">const</span> logid_range_t&amp; range,</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;                               status_callback_t) noexcept = 0;</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span></div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;  <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#ab7c94850b340bcc37cda74f35f9183d0">setLogGroupRangeSync</a>(<span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;                       <span class="keyword">const</span> logid_range_t&amp; range,</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;                       std::string* failure_reason = <span class="keyword">nullptr</span>) noexcept = 0;</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a2c2b8650e686d6165f1d5a7945d63996">getDirectory</a>(<span class="keyword">const</span> std::string&amp; path,</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;                           get_directory_callback_t) noexcept = 0;</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;  <span class="keyword">virtual</span> std::unique_ptr&lt;client::Directory&gt; <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a267a0614cc5e63a390251b028d4bae5f">getDirectorySync</a>(</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;    <span class="keyword">const</span> std::string&amp; path) noexcept = 0;</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a34c95d7cb5a1ad1951f4fb2ad292a325">syncLogsConfigVersion</a>(uint64_t version) noexcept = 0;</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classfacebook_1_1logdevice_1_1_config_subscription_handle.html">ConfigSubscriptionHandle</a> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a9828b92a8b696b1649b515f1fb157547">notifyOnLogsConfigVersion</a>(</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;    uint64_t version, std::function&lt;<span class="keywordtype">void</span>()&gt;) noexcept = 0;</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;  <span class="keyword">virtual</span> std::unique_ptr&lt;ClusterAttributes&gt; <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#aef7b6cbbef31366b14cec7a578e80bb9">getClusterAttributes</a>()</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;    noexcept = 0;</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classfacebook_1_1logdevice_1_1_config_subscription_handle.html">ConfigSubscriptionHandle</a> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a5189e872667a158b8837da87185ab7ec">subscribeToConfigUpdates</a>(</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;    config_update_callback_t) noexcept = 0;</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a977eec4108a9f539d539b2cae820c247">getMaxPayloadSize</a>() noexcept = 0;</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;  <span class="keyword">virtual</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client_settings.html">ClientSettings</a>&amp; <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#aafa91f8e42039d4f7606d1c7668f37ea">settings</a>() = 0;</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;  <span class="keyword">virtual</span> std::string <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#a57471fa5b9d0641343e9a5f07e79da20">getAllReadStreamsDebugInfo</a>() noexcept = 0;</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#ab8e0bcb6f9dabd95d40b1b63a98448ab">publishEvent</a>(Severity sev,</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;                            std::string name_space,</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;                            std::string type,</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;                            std::string data = <span class="stringliteral">&quot;&quot;</span>,</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;                            std::string context = <span class="stringliteral">&quot;&quot;</span>) noexcept = 0;</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;  <a class="code" href="classfacebook_1_1logdevice_1_1_client.html#adb9de7dd7dc6db1b9b9dcca495a0d7b4">Client</a>(<span class="keyword">const</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html">Client</a>&amp;) = <span class="keyword">delete</span>;            <span class="comment">// non-copyable</span></div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;  <a class="code" href="classfacebook_1_1logdevice_1_1_client.html">Client</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classfacebook_1_1logdevice_1_1_client.html">Client</a>&amp;) = <span class="keyword">delete</span>; <span class="comment">// non-assignable</span></div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;};</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;}} <span class="comment">// namespace</span></div><div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a267a0614cc5e63a390251b028d4bae5f"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a267a0614cc5e63a390251b028d4bae5f">facebook::logdevice::Client::getDirectorySync</a></div><div class="ttdeci">virtual std::unique_ptr&lt; client::Directory &gt; getDirectorySync(const std::string &amp;path) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a0bcc4915bb41bfd3b97bf2de51584967"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a0bcc4915bb41bfd3b97bf2de51584967">facebook::logdevice::Client::getHeadAttributesSync</a></div><div class="ttdeci">virtual std::unique_ptr&lt; LogHeadAttributes &gt; getHeadAttributesSync(logid_t logid) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a0817e65400f859da5f8c540d445d2a4f"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a0817e65400f859da5f8c540d445d2a4f">facebook::logdevice::Client::getLogRangesByNamespace</a></div><div class="ttdeci">virtual std::map&lt; std::string, logid_range_t &gt; getLogRangesByNamespace(const std::string &amp;ns) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a7f65fb0d14fe6a210a6001956a31b2a6"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a7f65fb0d14fe6a210a6001956a31b2a6">facebook::logdevice::Client::~Client</a></div><div class="ttdeci">virtual ~Client()=default</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html">facebook::logdevice::Client</a></div><div class="ttdef"><b>Definition:</b> Client.h:199</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a1f426c780bd844dcc55114bf3a9b4c5f"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a1f426c780bd844dcc55114bf3a9b4c5f">facebook::logdevice::Client::getTailLSNSync</a></div><div class="ttdeci">virtual lsn_t getTailLSNSync(logid_t logid) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_ac4d2aabc1842a955534ba9f215a44592"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#ac4d2aabc1842a955534ba9f215a44592">facebook::logdevice::Client::getLogRangeByName</a></div><div class="ttdeci">virtual logid_range_t getLogRangeByName(const std::string &amp;name) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a56747c28caeca0476ad42495cd2d00ca"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a56747c28caeca0476ad42495cd2d00ca">facebook::logdevice::Client::removeDirectorySync</a></div><div class="ttdeci">virtual bool removeDirectorySync(const std::string &amp;path, bool recursive=false) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a5e29c336be53be4381ea32a7e2a677fa"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a5e29c336be53be4381ea32a7e2a677fa">facebook::logdevice::Client::getLogNamespaceDelimiter</a></div><div class="ttdeci">virtual std::string getLogNamespaceDelimiter() noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_adb9de7dd7dc6db1b9b9dcca495a0d7b4"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#adb9de7dd7dc6db1b9b9dcca495a0d7b4">facebook::logdevice::Client::Client</a></div><div class="ttdeci">Client()=default</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_ab7c94850b340bcc37cda74f35f9183d0"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#ab7c94850b340bcc37cda74f35f9183d0">facebook::logdevice::Client::setLogGroupRangeSync</a></div><div class="ttdeci">virtual bool setLogGroupRangeSync(const std::string &amp;path, const logid_range_t &amp;range, std::string *failure_reason=nullptr) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a1692d455a2c608dbcecd675123338c7a"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a1692d455a2c608dbcecd675123338c7a">facebook::logdevice::Client::setAttributesSync</a></div><div class="ttdeci">virtual bool setAttributesSync(const std::string &amp;path, const client::LogAttributes &amp;attrs, std::string *failure_reason=nullptr) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_aafa91f8e42039d4f7606d1c7668f37ea"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#aafa91f8e42039d4f7606d1c7668f37ea">facebook::logdevice::Client::settings</a></div><div class="ttdeci">virtual ClientSettings &amp; settings()=0</div></div>
<div class="ttc" id="namespacefacebook_html"><div class="ttname"><a href="namespacefacebook.html">facebook</a></div><div class="ttdef"><b>Definition:</b> AsyncReader.h:17</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_settings_html"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client_settings.html">facebook::logdevice::ClientSettings</a></div><div class="ttdef"><b>Definition:</b> ClientSettings.h:24</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a51dbf28a3fc8266e4662a71deb73c21a"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a51dbf28a3fc8266e4662a71deb73c21a">facebook::logdevice::Client::trim</a></div><div class="ttdeci">virtual int trim(logid_t logid, lsn_t lsn, trim_callback_t cb) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a4d954a3bca85a3b41ffd23600463cfcb"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a4d954a3bca85a3b41ffd23600463cfcb">facebook::logdevice::Client::findKey</a></div><div class="ttdeci">virtual int findKey(logid_t logid, std::string key, find_key_callback_t cb, FindKeyAccuracy accuracy=FindKeyAccuracy::STRICT) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a771e6e5420f578bac83c51da04c878c2"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a771e6e5420f578bac83c51da04c878c2">facebook::logdevice::Client::setAttributes</a></div><div class="ttdeci">virtual int setAttributes(const std::string &amp;path, const client::LogAttributes &amp;attrs, status_callback_t cb) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a2b30b82b19b71acd383c3f2fdbf321aa"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a2b30b82b19b71acd383c3f2fdbf321aa">facebook::logdevice::Client::setTimeout</a></div><div class="ttdeci">virtual void setTimeout(std::chrono::milliseconds timeout) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_aab2bf5451fc1e3415681271b64de0bfe"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#aab2bf5451fc1e3415681271b64de0bfe">facebook::logdevice::Client::getLogGroup</a></div><div class="ttdeci">virtual void getLogGroup(const std::string &amp;path, get_log_group_callback_t cb) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a22c6047d80ec6b513bef7d61883f0bb4"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a22c6047d80ec6b513bef7d61883f0bb4">facebook::logdevice::Client::create</a></div><div class="ttdeci">static std::shared_ptr&lt; Client &gt; create(std::string cluster_name, std::string config_url, std::string credentials, std::chrono::milliseconds timeout, std::unique_ptr&lt; ClientSettings &gt; settings, std::string csid=&quot;&quot;) noexcept</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_aa6b836b639eacf5f737fbee3246ae78f"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#aa6b836b639eacf5f737fbee3246ae78f">facebook::logdevice::Client::getLogGroupSync</a></div><div class="ttdeci">virtual std::unique_ptr&lt; client::LogGroup &gt; getLogGroupSync(const std::string &amp;path) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a3ff4a519d6313dc122468b0ab84a6cbc"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a3ff4a519d6313dc122468b0ab84a6cbc">facebook::logdevice::Client::getHeadAttributes</a></div><div class="ttdeci">virtual int getHeadAttributes(logid_t logid, get_head_attributes_callback_t cb) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a9c3bcf709656e91fc65a82ee32e6634c"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a9c3bcf709656e91fc65a82ee32e6634c">facebook::logdevice::Client::rename</a></div><div class="ttdeci">virtual int rename(const std::string &amp;from_path, const std::string &amp;to_path, status_callback_t cb) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_aaef92340ce40a5f12b0e9b685595145a"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#aaef92340ce40a5f12b0e9b685595145a">facebook::logdevice::Client::setLogGroupRange</a></div><div class="ttdeci">virtual int setLogGroupRange(const std::string &amp;path, const logid_range_t &amp;range, status_callback_t) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a34c95d7cb5a1ad1951f4fb2ad292a325"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a34c95d7cb5a1ad1951f4fb2ad292a325">facebook::logdevice::Client::syncLogsConfigVersion</a></div><div class="ttdeci">virtual bool syncLogsConfigVersion(uint64_t version) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_ab8e0bcb6f9dabd95d40b1b63a98448ab"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#ab8e0bcb6f9dabd95d40b1b63a98448ab">facebook::logdevice::Client::publishEvent</a></div><div class="ttdeci">virtual void publishEvent(Severity sev, std::string name_space, std::string type, std::string data=&quot;&quot;, std::string context=&quot;&quot;) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a2c058bc9b12472e46ce95d77f32a0b2c"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a2c058bc9b12472e46ce95d77f32a0b2c">facebook::logdevice::Client::dataSizeSync</a></div><div class="ttdeci">virtual int dataSizeSync(logid_t logid, std::chrono::milliseconds start, std::chrono::milliseconds end, DataSizeAccuracy accuracy, size_t *size) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_ac000efd4c5f40b2836e13b4ce8b5e94b"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#ac000efd4c5f40b2836e13b4ce8b5e94b">facebook::logdevice::Client::getLogGroupByIdSync</a></div><div class="ttdeci">virtual std::unique_ptr&lt; client::LogGroup &gt; getLogGroupByIdSync(const logid_t logid) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a797d6ebcb95ace4b95a198a293215103"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a797d6ebcb95ace4b95a198a293215103">facebook::logdevice::Client::createReader</a></div><div class="ttdeci">virtual std::unique_ptr&lt; Reader &gt; createReader(size_t max_logs, ssize_t buffer_size=-1) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_aadaa483f8ea0d2fc39d0eb3c5f65c09a"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#aadaa483f8ea0d2fc39d0eb3c5f65c09a">facebook::logdevice::Client::append</a></div><div class="ttdeci">virtual int append(logid_t logid, std::string payload, append_callback_t cb, AppendAttributes attrs=AppendAttributes()) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a5189e872667a158b8837da87185ab7ec"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a5189e872667a158b8837da87185ab7ec">facebook::logdevice::Client::subscribeToConfigUpdates</a></div><div class="ttdeci">virtual ConfigSubscriptionHandle subscribeToConfigUpdates(config_update_callback_t) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_adea81d5b164611e4da5a6878458b51e0"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#adea81d5b164611e4da5a6878458b51e0">facebook::logdevice::Client::renameSync</a></div><div class="ttdeci">virtual bool renameSync(const std::string &amp;from_path, const std::string &amp;to_path, std::string *failure_reason=nullptr) noexcept=0</div></div>
<div class="ttc" id="structfacebook_1_1logdevice_1_1_find_key_result_html"><div class="ttname"><a href="structfacebook_1_1logdevice_1_1_find_key_result.html">facebook::logdevice::FindKeyResult</a></div><div class="ttdef"><b>Definition:</b> Client.h:46</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a527b0195263e113ad1d98a59d85bb8cd"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a527b0195263e113ad1d98a59d85bb8cd">facebook::logdevice::Client::createAsyncReader</a></div><div class="ttdeci">virtual std::unique_ptr&lt; AsyncReader &gt; createAsyncReader(ssize_t buffer_size=-1) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_acea7b4e3a8830fd9b7161470fce43f25"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#acea7b4e3a8830fd9b7161470fce43f25">facebook::logdevice::Client::isLogEmptySync</a></div><div class="ttdeci">virtual int isLogEmptySync(logid_t logid, bool *empty) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a54632fc9babcbe30d475e2da23f914f6"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a54632fc9babcbe30d475e2da23f914f6">facebook::logdevice::Client::makeLogGroupSync</a></div><div class="ttdeci">virtual std::unique_ptr&lt; client::LogGroup &gt; makeLogGroupSync(const std::string &amp;path, const logid_range_t &amp;range, const client::LogAttributes &amp;attrs=client::LogAttributes(), bool mk_intermediate_dirs=false, std::string *failure_reason=nullptr) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a038c93eefa0a8aa337b0c0b10970c7d0"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a038c93eefa0a8aa337b0c0b10970c7d0">facebook::logdevice::Client::appendSync</a></div><div class="ttdeci">virtual lsn_t appendSync(logid_t logid, std::string payload, AppendAttributes attrs=AppendAttributes(), std::chrono::milliseconds *timestamp=nullptr) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_aef7b6cbbef31366b14cec7a578e80bb9"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#aef7b6cbbef31366b14cec7a578e80bb9">facebook::logdevice::Client::getClusterAttributes</a></div><div class="ttdeci">virtual std::unique_ptr&lt; ClusterAttributes &gt; getClusterAttributes() noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_af19a0efc76f548b493957873002c1c15"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#af19a0efc76f548b493957873002c1c15">facebook::logdevice::Client::dataSize</a></div><div class="ttdeci">virtual int dataSize(logid_t logid, std::chrono::milliseconds start, std::chrono::milliseconds end, DataSizeAccuracy accuracy, data_size_callback_t cb) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_aa1697b6688a972f991a05c706bdcecdf"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#aa1697b6688a972f991a05c706bdcecdf">facebook::logdevice::Client::removeDirectory</a></div><div class="ttdeci">virtual int removeDirectory(const std::string &amp;path, bool recursive, status_callback_t) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a57471fa5b9d0641343e9a5f07e79da20"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a57471fa5b9d0641343e9a5f07e79da20">facebook::logdevice::Client::getAllReadStreamsDebugInfo</a></div><div class="ttdeci">virtual std::string getAllReadStreamsDebugInfo() noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a553df78853ca09da72c8c090ab1904f9"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a553df78853ca09da72c8c090ab1904f9">facebook::logdevice::Client::makeDirectorySync</a></div><div class="ttdeci">virtual std::unique_ptr&lt; client::Directory &gt; makeDirectorySync(const std::string &amp;path, bool mk_intermediate_dirs=false, const client::LogAttributes &amp;attrs=client::LogAttributes(), std::string *failure_reason=nullptr) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a2c2b8650e686d6165f1d5a7945d63996"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a2c2b8650e686d6165f1d5a7945d63996">facebook::logdevice::Client::getDirectory</a></div><div class="ttdeci">virtual int getDirectory(const std::string &amp;path, get_directory_callback_t) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_config_subscription_handle_html"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_config_subscription_handle.html">facebook::logdevice::ConfigSubscriptionHandle</a></div><div class="ttdef"><b>Definition:</b> ConfigSubscriptionHandle.h:32</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a5a487dfa98c0d77fe35980f5392abbf4"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a5a487dfa98c0d77fe35980f5392abbf4">facebook::logdevice::Client::getTailAttributesSync</a></div><div class="ttdeci">virtual std::unique_ptr&lt; LogTailAttributes &gt; getTailAttributesSync(logid_t logid) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_ae5854411762db40e48ba2e74142297c2"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#ae5854411762db40e48ba2e74142297c2">facebook::logdevice::Client::getTailLSN</a></div><div class="ttdeci">virtual int getTailLSN(logid_t logid, get_tail_lsn_callback_t cb) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a0d41ef80f8fc732ccd633efddfad96cc"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a0d41ef80f8fc732ccd633efddfad96cc">facebook::logdevice::Client::getLogGroupById</a></div><div class="ttdeci">virtual void getLogGroupById(const logid_t logid, get_log_group_callback_t cb) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a70bbf9403fb51a73c2124e55fb97d0f4"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a70bbf9403fb51a73c2124e55fb97d0f4">facebook::logdevice::Client::makeDirectory</a></div><div class="ttdeci">virtual int makeDirectory(const std::string &amp;path, bool mk_intermediate_dirs, const client::LogAttributes &amp;attrs, make_directory_callback_t cb) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a9828b92a8b696b1649b515f1fb157547"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a9828b92a8b696b1649b515f1fb157547">facebook::logdevice::Client::notifyOnLogsConfigVersion</a></div><div class="ttdeci">virtual ConfigSubscriptionHandle notifyOnLogsConfigVersion(uint64_t version, std::function&lt; void()&gt;) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_af5d99be796b2bdba8e9da20b08b04719"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#af5d99be796b2bdba8e9da20b08b04719">facebook::logdevice::Client::makeLogGroup</a></div><div class="ttdeci">virtual int makeLogGroup(const std::string &amp;path, const logid_range_t &amp;range, const client::LogAttributes &amp;attrs, bool mk_intermediate_dirs, make_log_group_callback_t cb) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a01eb0f0c77e1c55ad2958a05aad4bdc3"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a01eb0f0c77e1c55ad2958a05aad4bdc3">facebook::logdevice::Client::trimSync</a></div><div class="ttdeci">virtual int trimSync(logid_t logid, lsn_t lsn) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a1e0c38ddae87c659ff68bbea760f020b"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a1e0c38ddae87c659ff68bbea760f020b">facebook::logdevice::Client::findTime</a></div><div class="ttdeci">virtual int findTime(logid_t logid, std::chrono::milliseconds timestamp, find_time_callback_t cb, FindKeyAccuracy accuracy=FindKeyAccuracy::STRICT) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a1a2c5b528fdeca565cb837d2e307df34"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a1a2c5b528fdeca565cb837d2e307df34">facebook::logdevice::Client::removeLogGroupSync</a></div><div class="ttdeci">virtual bool removeLogGroupSync(const std::string &amp;path) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_ab42189ee10063b1917555aa83799c82f"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#ab42189ee10063b1917555aa83799c82f">facebook::logdevice::Client::findKeySync</a></div><div class="ttdeci">virtual FindKeyResult findKeySync(logid_t logid, std::string key, FindKeyAccuracy accuracy=FindKeyAccuracy::STRICT) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a148372b0049445d9b63b06d5ac0d7613"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a148372b0049445d9b63b06d5ac0d7613">facebook::logdevice::Client::getTailAttributes</a></div><div class="ttdeci">virtual int getTailAttributes(logid_t logid, get_tail_attributes_callback_t cb) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a2a04ef35610e51a47c3160e3e3b452bf"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a2a04ef35610e51a47c3160e3e3b452bf">facebook::logdevice::Client::findTimeSync</a></div><div class="ttdeci">virtual lsn_t findTimeSync(logid_t logid, std::chrono::milliseconds timestamp, Status *status_out=nullptr, FindKeyAccuracy accuracy=FindKeyAccuracy::STRICT) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_aa402ed205a3138575644c8b3e9e6df85"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#aa402ed205a3138575644c8b3e9e6df85">facebook::logdevice::Client::isLogEmpty</a></div><div class="ttdeci">virtual int isLogEmpty(logid_t logid, is_empty_callback_t cb) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_ab2363408b3b4c928cac60845cbe31d05"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#ab2363408b3b4c928cac60845cbe31d05">facebook::logdevice::Client::addWriteToken</a></div><div class="ttdeci">virtual void addWriteToken(std::string) noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a977eec4108a9f539d539b2cae820c247"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a977eec4108a9f539d539b2cae820c247">facebook::logdevice::Client::getMaxPayloadSize</a></div><div class="ttdeci">virtual size_t getMaxPayloadSize() noexcept=0</div></div>
<div class="ttc" id="classfacebook_1_1logdevice_1_1_client_html_a0f09c107d0083cf3e23538dca8b430bb"><div class="ttname"><a href="classfacebook_1_1logdevice_1_1_client.html#a0f09c107d0083cf3e23538dca8b430bb">facebook::logdevice::Client::removeLogGroup</a></div><div class="ttdeci">virtual int removeLogGroup(const std::string &amp;path, status_callback_t cb) noexcept=0</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- HTML footer for doxygen 1.8.14-->
<!-- start footer part -->
<hr class="footer"/><address class="footer">
<small>
LogDevic API v2.35
</small>
</address>
</body>
</html>
